/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
"use strict";

var $protobuf = require("protobufjs/light");

var $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $protobuf.Root()))
.addJSON({
  im: {
    options: {
      java_package: "com.miao.im",
      java_outer_classname: "ResultModel"
    },
    nested: {
      AuthRequest: {
        fields: {
          username: {
            type: "string",
            id: 1
          },
          password: {
            type: "string",
            id: 2
          },
          deviceNumber: {
            type: "string",
            id: 3
          }
        }
      },
      AuthResponse: {
        fields: {
          userId: {
            type: "string",
            id: 1
          },
          nickname: {
            type: "string",
            id: 2
          },
          username: {
            type: "string",
            id: 3
          },
          avatar: {
            type: "string",
            id: 4
          },
          routingKey: {
            type: "string",
            id: 5
          },
          deviceNumber: {
            type: "string",
            id: 6
          },
          time: {
            type: "int64",
            id: 7
          }
        }
      },
      ErrorResponse: {
        fields: {
          code: {
            type: "int32",
            id: 1
          },
          message: {
            type: "string",
            id: 2
          }
        }
      },
      Heartbeat: {
        fields: {
          timestamp: {
            type: "int64",
            id: 1
          }
        }
      },
      KickOutRequest: {
        fields: {
          sourceDeviceNumber: {
            type: "string",
            id: 1
          },
          sourceIpAddr: {
            type: "string",
            id: 2
          },
          userId: {
            type: "int64",
            id: 3
          },
          targetDeviceNumber: {
            type: "string",
            id: 4
          }
        }
      },
      MsgIdResponse: {
        fields: {
          msgId: {
            type: "int64",
            id: 1
          }
        }
      },
      OfflineMsgAckRequest: {
        fields: {
          targetId: {
            type: "int64",
            id: 1
          },
          targetType: {
            type: "int32",
            id: 2
          },
          lastTimestamp: {
            type: "int64",
            id: 3
          }
        }
      },
      OfflineMsgRequest: {
        fields: {
          targetId: {
            type: "int64",
            id: 1
          },
          targetType: {
            type: "int32",
            id: 2
          },
          pageSize: {
            type: "int32",
            id: 3
          },
          lastTimestamp: {
            type: "int64",
            id: 4
          }
        }
      },
      OfflineMsgResponse: {
        fields: {
          messages: {
            rule: "repeated",
            type: "Content",
            id: 1
          }
        }
      },
      Content: {
        fields: {
          fromUserId: {
            type: "int64",
            id: 1
          },
          fromUserNickname: {
            type: "string",
            id: 2
          },
          fromUserAvatar: {
            type: "string",
            id: 3
          },
          targetId: {
            type: "int64",
            id: 4
          },
          targetNickname: {
            type: "string",
            id: 5
          },
          targetAvatar: {
            type: "string",
            id: 6
          },
          sequence: {
            type: "int64",
            id: 7
          },
          mediaType: {
            type: "int32",
            id: 8
          },
          message: {
            type: "string",
            id: 9
          },
          targetType: {
            type: "int32",
            id: 10
          },
          sendTimestamp: {
            type: "int64",
            id: 11
          },
          expand: {
            type: "string",
            id: 12
          }
        }
      },
      P2PRequest: {
        fields: {
          fromUserId: {
            type: "int64",
            id: 1
          },
          fromUserNickname: {
            type: "string",
            id: 2
          },
          fromUserAvatar: {
            type: "string",
            id: 3
          },
          fromRoutingKey: {
            type: "string",
            id: 4
          },
          toUserId: {
            type: "int64",
            id: 5
          },
          toUserNickname: {
            type: "string",
            id: 6
          },
          toUserAvatar: {
            type: "string",
            id: 7
          },
          mediaType: {
            type: "int32",
            id: 8
          },
          message: {
            type: "string",
            id: 9
          },
          expand: {
            type: "string",
            id: 10
          }
        }
      },
      P2PResponse: {
        fields: {
          fromUserId: {
            type: "int64",
            id: 1
          },
          fromRoutingKey: {
            type: "string",
            id: 2
          },
          toUserId: {
            type: "int64",
            id: 3
          },
          sendTimestamp: {
            type: "int64",
            id: 4
          }
        }
      },
      Result: {
        fields: {
          code: {
            type: "int32",
            id: 1
          },
          message: {
            type: "string",
            id: 2
          },
          data: {
            type: "bytes",
            id: 3
          }
        }
      }
    }
  }
});

module.exports = $root;
